<?php

	require_once('../utils.php');
	require_once('../ORMReporteEXE.php');
	require_once('../Excel.php');

	session_start();

	switch ($_REQUEST['op'])
	{
		// -------------------------------------------------------
		case 'contar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			resp('total', ORMReporteEXE::contarItems());

			break;

		// -------------------------------------------------------
		case 'listar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				)
			));

			resp('datos', ORMReporteEXE::getItems(
				$in['offset'],
				$in['count']
			));
			break;

		// -------------------------------------------------------
		case 'exportar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'full' => array(
					'obligatorio' => array(true, 'Falta parámetro full.'),
					'numerico' => array('Se esperaba un valor numérico')
				)
			));

			if ($in['full'])
			{
				$in['offset'] = 0;
				$in['count'] = $CONFIG['max_export'];
			}

			$data = ORMReporteEXE::getItems(
				$in['offset'],
				$in['count']
			);

			$fields = array(
				'codigo_empleado',
				'identidad',
				'nombres',
				'apellidos',
				'id_cargo',
				'cargo',
				'id_departamento',
				'departamento',
				'planilla',
				'codigo_ingreso_deduccion',
				'valor_deducciones'
			);

			$header = array(
				'Codigo Empleado',
				'Identidad',
				'Nombres',
				'Apellidos',
				'ID Cargo',
				'Cargo',
				'ID Departamento',
				'Departamento',
				'Planilla',
				'Codigo Ingreso Deduccion',
				'Cantidad de Deduccion'
			);

			$output = array();

			for ($i = 0; $i < sizeof($data); $i++)
			{
				$row = array();

				for ($j = 0; $j < sizeof($fields); $j++)
				{
					$row[] = $data[$i][$fields[$j]];
				}

				$output[] = $row;
			}

			Excel::Exportar('Reporte de Deducciones por Empleado', $header, $output);
			exit;

			break;


		// -------------------------------------------------------
		default:
			if (!$_REQUEST['op'])
				reterr (E_ERROR_PROC, 'Falta código de operación (op).');	
			else
				reterr (E_ERROR_PROC, 'Código de operación no reconocido: ' . $_REQUEST['op']);	

			break;
	}

	ret(E_OK);
